package xyz.xtgl.product.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import common.core.util.CommonUtil;
import common.core.util.LoginUtil;
import common.core.util.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import plus.logic.LogicBaseController;
import xyz.xtgl.product.entity.BProductBrand;
import xyz.xtgl.product.entity.help.BProductBrandHelp;
import xyz.xtgl.product.feign.BProductBrandFeign;
import xyz.xtgl.product.service.IBProductBrandService;

/**
 * <p>
 * 商户商品品牌 前端控制器
 * </p>
 *
 * @author liubo
 * @since 2020-02-15
 */

@Slf4j
@RestController
@RequestMapping("/product/b_product_brand")
public class BProductBrandController extends LogicBaseController<IBProductBrandService, BProductBrand> implements BProductBrandFeign{

    @Autowired
    private IBProductBrandService iBProductBrandService;

    /**
     * 列表页面表格数据
     * @param query 查询条件
     * @param page 分页对象
     * @return page 分页对象
     */
    @RequestMapping("/list")
    public Result listData(QueryWrapper<BProductBrand> query, Page<BProductBrand> page) {
        query.eq(BProductBrandHelp.merchantUserId,LoginUtil.getId());
        return Result.success(iBProductBrandService.page(page, query));
    }

    /**
     * 跳转到修改页面
     * @param id 唯一主键
     * @param model Spring提供的绑定器
     * @return 修改页面
     */
    @RequestMapping("/edit")
    public Result editPage(String id, Model model) {
        if(CommonUtil.isEmpty(id)) {
            return Result.fail("id 不能为空");
        }
        BProductBrand entity = this.iBProductBrandService.getById(id);
        if(CommonUtil.isEmpty(entity)) {
            return Result.fail("数据不存在");
        }
        return Result.success(entity);
    }

    /**
     * 数据保存
     * @param entity 实体类
     * @return Result 统一结果对象
     */
    @RequestMapping("/saveOrUpdateEntity")
    public Result saveOrUpdateEntity(BProductBrand entity) {
        entity.setMerchantUserId(LoginUtil.getId());
        log.info("开始保存数据:{}" ,entity);
        this.iBProductBrandService.saveOrUpdate(entity);
        return Result.success();
    }

    /**
     * 数据删除
     * @param queryWrapper 删除条件
     * @return Result 统一结果对象
     */
    @RequestMapping("/removed")
    public Result removed(QueryWrapper<BProductBrand> queryWrapper) {
        this.iBProductBrandService.remove(queryWrapper);
        return Result.success();
    }

}
